.text
.global _start

.equ RCC_MP_AHB4ENSETR, 0x50000A28
.equ GPIOE_MODER,		0x50006000
.equ GPIOE_OTYPER,      0x50006004
.equ GPIOE_OSPEEDR,     0x50006008
.equ GPIOE_PUPDR,		0x5000600C
.equ GPIOE_IDR,			0x50006010
.equ GPIOE_ODR,			0x50006014

_start:
	/*GPIOE10管脚初始化*/
	/*1 使能GPIOE控制器的时钟使能*/
	ldr r0, =RCC_MP_AHB4ENSETR
	ldr r1, [r0]  @加载
	orr r1, r1, #(1<<4) @修改
	str r1, [r0] @写回
	/*2 设置为输出模式*/
	ldr r0, =GPIOE_MODER
	ldr r1, [r0]
	bic r1, r1, #(3<<20)
	orr r1, r1, #(1<<20)
	str r1, [r0]
	/*3 设置为推挽输出*/
	ldr r0, =GPIOE_OTYPER
	ldr r1, [r0]
	bic r1, r1, #(1<<10)
	str r1, [r0]
	/*4 设置为低速模式*/
	ldr r0, =GPIOE_OSPEEDR
	ldr r1, [r0]
	bic r1, r1, #(3<<20)
	str r1, [r0]
	/*5 设置禁止内部上拉下拉*/
	ldr r0, =GPIOE_PUPDR
	ldr r1, [r0]
	bic r1, r1, #(3<<20)
	str r1, [r0]
	/*循环实现灯的闪烁*/
loop:
	/*6 亮灯*/
	ldr r0, =GPIOE_ODR
	ldr r1, [r0]
	orr r1, r1, #(1<<10)
	str r1, [r0]
	bl delay
	/*7 灭灯*/
	ldr r0, =GPIOE_ODR
	ldr r1, [r0]
	bic r1, r1, #(1<<10)
	str r1, [r0]
	bl delay

	b loop

delay:
	mov r0, #0x10000000
delay_loop:
	sub r0, r0, #1
	cmp r0, #0
	bne delay_loop
	
	mov pc, lr




